home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / intrfc62.zip / PARAMS.PAS < prev    next >
Pascal/Delphi Source File  |  1991-06-11  |  3KB  |  116 lines

  1. unit params;
  2. interface
  3.   uses dos,globals,util;
  4.  
  5.   procedure syntax_exit(msg:string);
  6.   procedure parse_params;
  7.  
  8. implementation
  9.  
  10. procedure syntax_exit(msg:string);
  11. var
  12.   junk : char;
  13. begin
  14.   writeln(msg);
  15.   writeln('Syntax:');
  16.   writeln('INTRFC /options unit');
  17.   writeln('where options are letters from the following:');
  18.   writeln('B - emitted code bytes');
  19.   writeln('C - initialized constant blocks');
  20.   writeln('D - code blocks');
  21.   writeln('E - routine entry records');
  22.   writeln('G - emitted global const bytes');
  23.   writeln('H - TPU header');
  24.   writeln('I - implementation section (if $D was used in compilation)');
  25.   writeln('L - proc/fn locals (if $L was used in compilation)');
  26.   writeln('M - source line number map');
  27.   writeln('N - names in interface');
  28.   writeln('O - object VMT records');
  29.   writeln('R - relocation records');
  30.   writeln('S - source file records');
  31.   writeln('U - unit list');
  32.   writeln('V - var blocks');
  33.   writeln('W - windows DLL list');
  34.   writeln('A - turn all options on');
  35.   writeln('Options are processed sequentially and toggle the display.');
  36.   write('<Hit Enter for more...>');
  37.   read(junk);
  38.   writeln('Use /Tpath to set the Turbo directory for ',tpl_name,' and referenced');
  39.   writeln(' units.');
  40.   writeln('E.G. To see all but the relocation records in the system unit, use');
  41.   writeln('   INTRFC /AR /T\turbo SYSTEM ');
  42.   writeln('The default is just the names in the interface section.');
  43.   halt(1);
  44. end;
  45.  
  46. procedure toggle(o:option);
  47. begin
  48.   if o in active_options then
  49.     active_options := active_options - [o]
  50.   else
  51.     active_options := active_options + [o];
  52. end;
  53.  
  54. procedure parse_params;
  55. var
  56.   p : string;
  57.   i : integer;
  58.   path : dirstr;
  59.   name : namestr;
  60.   ext : extstr;
  61.  
  62. begin
  63.   i := 1;
  64.   unitname := '';
  65.   uses_path := '';
  66.   for i := 1 to paramcount do
  67.   begin
  68.     p := paramstr(i);
  69.     if p[1] <> '/' then
  70.     begin
  71.       unitname := upper(p);
  72.       fsplit(unitname,path,name,ext);
  73.       unitname := path+name;
  74.     end
  75.     else
  76.     begin
  77.       p := copy(p,2,255);   { strip off the / }
  78.       while length(p) > 0 do
  79.       begin
  80.         case upcase(p[1]) of
  81.         'A' : active_options := [do_header..do_locals];
  82.         'B' : toggle(do_code);
  83.         'C' : toggle(do_const_blocks);
  84.         'D' : toggle(do_code_blocks);
  85.         'E' : toggle(do_entry_pts);
  86.         'G' : toggle(do_const);
  87.         'H' : toggle(do_header);
  88.         'I' : toggle(do_implementation);
  89.         'L' : toggle(do_locals);
  90.         'M' : toggle(do_src_lines);
  91.         'N' : toggle(do_name_list);
  92.         'O' : toggle(do_vmt);
  93.         'R' : toggle(do_reloc);
  94.         'S' : toggle(do_src_files);
  95.         'U' : toggle(do_unit_blocks);
  96.         'V' : toggle(do_var_blocks);
  97.         'W' : toggle(do_dll_blocks);
  98.         'T' : begin
  99.                 uses_path := copy(p,2,255);
  100.                 if uses_path[length(uses_path)] <> '\' then
  101.                   uses_path := uses_path + '\';
  102.                 p := '';
  103.               end;
  104.         else
  105.           syntax_exit('Unrecognized option '+paramstr(i)+'.');
  106.         end;
  107.         p := copy(p,2,255);
  108.       end;
  109.     end;
  110.   end;
  111.   if unitname = '' then
  112.     syntax_exit('Unit name not specified.');
  113. end;
  114.  
  115. end.
  116.